package com.ruoyi.finance.domain;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 销售出(退)库单对象 t_commission_delivery_product
 *
 * @author admin
 * @date 2023-10-13
 */
public class CommissionDeliveryProduct extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    private Long id;

    /**
     * 季度
     */
    @Excel(name = "季度")
    private String quarter;

    /**
     * 月份
     */
    @ExcelProperty
    @Excel(name = "月份")
    private String month;

    /**
     * 出/退库日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出/退库日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date storageDate;

    /**
     * 单据类型(0=出库单,1=退库单)
     */
    @Excel(name = "单据类型", readConverterExp = "0=出库单,1=退货单")
    private Integer billType;

    /**
     * PI号
     */
    @Excel(name = "PI号")
    private String piNo;

    /**
     * 单据编号
     */
    @Excel(name = "单据编号")
    private String billNo;

    /**
     * 行号
     */
    @Excel(name = "行号")
    private String lineNo;

    /**
     * 销售部门
     */
    @Excel(name = "销售部门")
    private String salesDept;

    /**
     * 销售员
     */
    @Excel(name = "销售员")
    private String salesName;
    /**
     * 组织编码
     */
    //@Excel(name = "组织编码")
    private String orgCode;

    /**
     * 客户编码
     */
    @Excel(name = "客户编码")
    private String customerNo;

    /**
     * sku编码
     */
    @Excel(name = "sku编码")
    private String skuCode;

    /**
     * 英文名称
     */
    private String nameEn;

    /**
     * 中文名称
     */
    @Excel(name = "中文名称")
    private String nameCn;

    /**
     * 一级品类/产品线
     */
    @Excel(name = "一级品类")
    private String productLine;

    /**
     * 二级品类/产品线
     */
    @Excel(name = "二级品类")
    private String type;

    /**
     * 应发数量
     */
    @Excel(name = "应发数量", cellType = Excel.ColumnType.NUMERIC)
    private Integer mustQty;

    /**
     * 实发数量
     */
    @Excel(name = "实发数量", cellType = Excel.ColumnType.NUMERIC)
    private Integer realQty;

    /**
     * 单价
     */
    @Excel(name = "单价", cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal unitPrice;

    /**
     * 总价格
     */
    @Excel(name = "金额", cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal totalPrice;

    /**
     * 本位币总价格
     */
    @Excel(name = "金额(本位币)", cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal totalPriceRmb;

    /**
     * 成本价(采购执行报价)
     */
    //@Excel(name = "成本价(采购执行报价)")
    private BigDecimal costPrice;

    /**
     * 总成本价
     */
    @Excel(name = "总成本价", cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal totalCostPrice;
    /**
     * 系统运费
     */
    @Excel(name = "系统运费", cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal systemFreight;

    /**
     * 真实成本价(采购执行报价)
     */
    @Excel(name = "采购执行报价", cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal realCostPrice;

    /**
     * 销售提成单价=真实成本价(采购执行报价)
     */
    @Excel(name = "销售提成单价", cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal commissionUintPrice;

    /**
     * 毛利润
     */
    @Excel(name = "毛利润", cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal grossMargin;

    /**
     * 真实总成本价
     */
    @Excel(name = "采购成本", cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal realTotalCostPrice;

    /**
     * 提成年月
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    //@Excel(name = "年月", width = 30, dateFormat = "yyyy-MM-dd")
    private Date commissionDate;

    /**
     * 备注
     */
    @Excel(name = "备注")
    private String remark;

    /**
     * 查询类型
     */
    private Integer searchType;

    /**
     * 发货状态
     */
    private Integer deliveryStatus;
    /**
     * 收款状态
     */
    private Integer receiptStatus;

    /**
     * 核算状态 0=未核算 1=本月核算 2=之前已核算过
     */
    private Integer checkStatus;


    /**
     * PI号集合
     */
    private List<String> piNos;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setBillNo(String billNo) {
        this.billNo = billNo;
    }

    public String getBillNo() {
        return billNo;
    }

    public void setBillType(Integer billType) {
        this.billType = billType;
    }

    public Integer getBillType() {
        return billType;
    }

    public void setPiNo(String piNo) {
        this.piNo = piNo;
    }

    public String getPiNo() {
        return piNo;
    }

    public void setLineNo(String lineNo) {
        this.lineNo = lineNo;
    }

    public String getLineNo() {
        return lineNo;
    }

    public void setSalesDept(String salesDept) {
        this.salesDept = salesDept;
    }

    public String getSalesDept() {
        return salesDept;
    }

    public void setSalesName(String salesName) {
        this.salesName = salesName;
    }

    public String getSalesName() {
        return salesName;
    }

    public void setCustomerNo(String customerNo) {
        this.customerNo = customerNo;
    }

    public String getCustomerNo() {
        return customerNo;
    }

    public void setSkuCode(String skuCode) {
        this.skuCode = skuCode;
    }

    public String getSkuCode() {
        return skuCode;
    }

    public void setProductLine(String productLine) {
        this.productLine = productLine;
    }

    public String getProductLine() {
        return productLine;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getType() {
        return type;
    }

    public void setNameEn(String nameEn) {
        this.nameEn = nameEn;
    }

    public String getNameEn() {
        return nameEn;
    }

    public void setNameCn(String nameCn) {
        this.nameCn = nameCn;
    }

    public String getNameCn() {
        return nameCn;
    }

    public void setMustQty(Integer mustQty) {
        this.mustQty = mustQty;
    }

    public Integer getMustQty() {
        return mustQty;
    }

    public void setRealQty(Integer realQty) {
        this.realQty = realQty;
    }

    public Integer getRealQty() {
        return realQty;
    }

    public void setUnitPrice(BigDecimal unitPrice) {
        this.unitPrice = unitPrice;
    }

    public BigDecimal getUnitPrice() {
        return unitPrice;
    }

    public void setTotalPrice(BigDecimal totalPrice) {
        this.totalPrice = totalPrice;
    }

    public BigDecimal getTotalPrice() {
        return totalPrice;
    }

    public void setTotalPriceRmb(BigDecimal totalPriceRmb) {
        this.totalPriceRmb = totalPriceRmb;
    }

    public BigDecimal getTotalPriceRmb() {
        return totalPriceRmb;
    }

    public void setCostPrice(BigDecimal costPrice) {
        this.costPrice = costPrice;
    }

    public BigDecimal getCostPrice() {
        return costPrice;
    }

    public void setTotalCostPrice(BigDecimal totalCostPrice) {
        this.totalCostPrice = totalCostPrice;
    }

    public BigDecimal getTotalCostPrice() {
        return totalCostPrice;
    }

    public void setRealCostPrice(BigDecimal realCostPrice) {
        this.realCostPrice = realCostPrice;
    }

    public BigDecimal getRealCostPrice() {
        return realCostPrice;
    }

    public void setGrossMargin(BigDecimal grossMargin) {
        this.grossMargin = grossMargin;
    }

    public BigDecimal getGrossMargin() {
        return grossMargin;
    }

    public void setRealTotalCostPrice(BigDecimal realTotalCostPrice) {
        this.realTotalCostPrice = realTotalCostPrice;
    }

    public BigDecimal getRealTotalCostPrice() {
        return realTotalCostPrice;
    }

    public void setStorageDate(Date storageDate) {
        this.storageDate = storageDate;
    }

    public Date getStorageDate() {
        return storageDate;
    }

    public void setQuarter(String quarter) {
        this.quarter = quarter;
    }

    public String getQuarter() {
        return quarter;
    }

    public void setMonth(String month) {
        this.month = month;
    }

    public String getMonth() {
        return month;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("billNo", getBillNo())
                .append("billType", getBillType())
                .append("piNo", getPiNo())
                .append("lineNo", getLineNo())
                .append("salesDept", getSalesDept())
                .append("salesName", getSalesName())
                .append("customerNo", getCustomerNo())
                .append("skuCode", getSkuCode())
                .append("productLine", getProductLine())
                .append("type", getType())
                .append("nameEn", getNameEn())
                .append("nameCn", getNameCn())
                .append("mustQty", getMustQty())
                .append("realQty", getRealQty())
                .append("unitPrice", getUnitPrice())
                .append("totalPrice", getTotalPrice())
                .append("totalPriceRmb", getTotalPriceRmb())
                .append("costPrice", getCostPrice())
                .append("totalCostPrice", getTotalCostPrice())
                .append("realCostPrice", getRealCostPrice())
                .append("grossMargin", getGrossMargin())
                .append("realTotalCostPrice", getRealTotalCostPrice())
                .append("remark", getRemark())
                .append("storageDate", getStorageDate())
                .append("quarter", getQuarter())
                .append("month", getMonth())
                .append("updateTime", getUpdateTime())
                .toString();
    }

    public String getOrgCode() {
        return orgCode;
    }

    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }

    public Date getCommissionDate() {
        return commissionDate;
    }

    public void setCommissionDate(Date commissionDate) {
        this.commissionDate = commissionDate;
    }

    public Integer getSearchType() {
        return searchType;
    }

    public void setSearchType(Integer searchType) {
        this.searchType = searchType;
    }

    public List<String> getPiNos() {
        return piNos;
    }

    public void setPiNos(List<String> piNos) {
        this.piNos = piNos;
    }

    public Integer getCheckStatus() {
        return checkStatus;
    }

    public void setCheckStatus(Integer checkStatus) {
        this.checkStatus = checkStatus;
    }

    public Integer getReceiptStatus() {
        return receiptStatus;
    }

    public void setReceiptStatus(Integer receiptStatus) {
        this.receiptStatus = receiptStatus;
    }

    public Integer getDeliveryStatus() {
        return deliveryStatus;
    }

    public void setDeliveryStatus(Integer deliveryStatus) {
        this.deliveryStatus = deliveryStatus;
    }

    @Override
    public String getRemark() {
        return remark;
    }

    @Override
    public void setRemark(String remark) {
        this.remark = remark;
    }

    public BigDecimal getSystemFreight() {
        return systemFreight;
    }

    public void setSystemFreight(BigDecimal systemFreight) {
        this.systemFreight = systemFreight;
    }

    public BigDecimal getCommissionUintPrice() {
        return commissionUintPrice;
    }

    public void setCommissionUintPrice(BigDecimal commissionUintPrice) {
        this.commissionUintPrice = commissionUintPrice;
    }
}
